﻿using Layans.Data;
using Api.Models;
using Api.ViewModels.News;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebMatrix.WebData;
namespace Api.Controllers.News
{
    [Authorize]
    public class NewsPostController : Controller
    {
    //    LayansContext db = new LayansContext(); 
    //    //
    //    // GET: /NewsPost/
    //    public ActionResult Index()
    //    {
    //        return View();
    //    }

    //    public ActionResult Create (NewsPost newsPost)
    //    {
    //        var user = db.Author.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
    //        var posts = new NewsPost
    //            {
    //                Post = Server.HtmlDecode(newsPost.Post),
    //                CreationTime  = DateTime.Now,
    //                Author = user,
    //                avatar = avatars,
    //            };
    //        db.NewsPosts.Add(posts);
    //        db.SaveChanges();

    //        return Redirect("/");
    //    }

    //    public ActionResult ViewPost(int postId)
    //    {
    //        if(!db.NewsPosts.Any(x => x.Id == postId))
    //        {
    //            return Redirect("/");
    //        }

    //        var post = db.NewsPosts.Where(x => x.Id == postId)
    //            .Select(x => new FullNewsPostViewModel
    //            {
    //                Id = x.Id,
    //                post = x.post,
    //                Username = x.Authors,
    //                Avatar = x.avatars,
    //            }).SingleOrDefault();

    //        post.Answers = db.NewsPostAnswers.Where(x => x.NewsPost.Id == postId)
    //            .Select(y => new NewsPostAnswerViewModel
    //            {
    //                Comment = y.Content,
    //                CreationTime = y.CreationTime,
    //                Username = y.Author.UserName,
    //                Avatar = y.avatar,
    //            });

    //        return View(post);
    //    }

    //    [Authorize]
    //    [HttpPost]
    //    [ValidateAntiForgeryToken]
    //    public ActionResult CreateAnswer( int newsPostId, string comment)
    //    {
    //        var user = db.Author.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
    //        var newsPost = db.NewsPosts.FirstOrDefault(x => x.Id == newsPostId);

    //        db.NewsPostAnswers.Add(
    //            new NewsPostAnswer()
    //            {
    //                Author = user,
    //                Content = Server.HtmlDecode(comments),
    //                CreationTime = DateTime.Now,
    //                avatar = avatarses,
    //                NewsPost = newsPost,
    //            });

    //        db.SaveChanges();

    //        return Redirect("/");
    //    }

    //    public ActionResult Vote(int id)
    //    {
    //        if(db.NewsPostVotes.Any(x => x.Post.Id == id && x.User.UserId == WebSecurity.CurrentUserId))
    //        {

    //            var currentEntry = db.NewsPostVotes.SingleOrDefault(x => x.Post.Id == id && x.User.UserId == WebSecurity.CurrentUserId);

    //            currentEntry.UpVote = true;
    //            db.SaveChanges();
    //        }
            
    //        else
    //        {
    //            var user = db.Author.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
    //            var newsPost = db.NewsPosts.FirstOrDefault(x => x.Id == id);
    //            db.NewsPostVotes.Add(new NewsPostVote()
    //                {
    //                    Post = newsPost,
    //                    User = user,
    //                    UpVote = true,
    //                });
    //            db.SaveChanges();
    //        }

    //        int rating = db.NewsPostVotes.Count(y => y.Post.Id == id && y.UpVote);

    //        return Content(rating.ToString());
    //    }

    //    public Avatar avatars { get; set; }

    //    public string avatarses { get; set; }

    //    public string comments { get; set; }
    }
}